Portal App
Portal App is an web application that support for business team manage all call centers of Gcalls easily
I. Functionality
- Management data of call center
- Tenant management
- User management
- Sip management
- Role management
- Decentralization call center
- Add/Remove a tenant to decentralization
- Record
- CRD PBX
- CRUD PBX's domains
II. Packages
1. Dependencies
1.1 Server
- Abortcontroller-polyfill - A library that polyfills the AbortController API for older browsers Abortcontroller-polyfill
- Axios - Promise based HTTP client for the browser and node.js Axios
- Bluebird - Bluebird is a fully featured promise library with focus on innovative features and performance Bluebird
- Body-parser - Node.js body parsing middleware Body-parser
- Compression - Node.js compression middleware Compression
- Connect-multiparty - Middleware for handling
multipart/form-dataConnect-multiparty - Cors - Node.js CORS middleware Cors
- Dotenv-webpack - A secure webpack plugin that supports dotenv and other environment variables and only exposes what you choose and use Dotenv-webpack
- Dotenv - Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env Dotenv
- Ejs - Embedded JavaScript templates Ejs
- Express-session - Simple session middleware for Express Express-session
- Express - Fast, unopinionated, minimalist web framework for node Express
- Global - Global is a single instance of a class that can be accessed from anywhere Global
- I18next - I18next is an internationalization-framework written in and for JavaScript I18next
- Less-watch-compiler - A compiler for LESS that watches files, compiles new changes and optionally minifies the output Less-watch-compiler
- Less - The dynamic stylesheet language Less
- Morgan - HTTP request logger middleware for node.js Morgan
- Nodemailer - Send e-mails from Node.js Nodemailer
- React-bootstrap-table - It's a react table for bootstrap React-bootstrap-table
- React-dom - This package serves as the entry point of the DOM-related rendering paths React-dom
- React-redux-multilingual - A simple react-redux multilingual library React-redux-multilingual
- React-redux - Official React bindings for Redux React-redux
- React-router-dom - DOM bindings for React Router React-router-dom
- React-router - Declarative routing for React React-router
- React-scroll - Component for animating vertical scrolling React-scroll
- React - React is a JavaScript library for building user interfaces React
- Redux-thunk - Thunk middleware for Redux Redux-thunk
- Redux - Redux is a predictable state container for JavaScript apps Redux
- Rotating-file-stream - Creates a stream.Writable to a file which is rotated Rotating-file-stream
- Serve-favicon - Node.js middleware for serving a favicon Serve-favicon
- Sweetalert2 - A beautiful, responsive, customizable and accessible (WAI-ARIA) replacement for JavaScript's popup boxes Sweetalert2
- Uuid - RFC4122 (v1, v4, and v5) UUIDs Uuid
- Webpack-dev-middleware - Offers a dev middleware for webpack, which arguments a live bundle to a directory Webpack-dev-middleware
- Webpack-hot-middleware - Webpack hot reloading you can attach to your own server Webpack-hot-middleware
- Webpack - A bundler for javascript and friends Webpack
- Winston - A logger for just about everything Winston
2. Dev dependencies
- Babel-core - A library for using babel-register etc. with webpack Babel-core
- Babel-loader - This package allows transpiling JavaScript files using Babel and webpack Babel-loader
- Babel-plugin-transform-decorators-legacy - A plugin for Babel 6 that (mostly) replicates the old decorator behavior from Babel 5 Babel-plugin-transform-decorators-legacy
- Babel-polyfill - Provides polyfills necessary for a full ES2015+ environment Babel-polyfill
- Babel-preset-es2015 - Babel preset for all es2015 plugins Babel-preset-es2015
- Babel-preset-react - Babel preset for all React plugins Babel-preset-react
- Babel-preset-stage-0 - Babel preset for stage 0 plugins Babel-preset-stage-0
- Babel - Babel is a compiler for writing next generation JavaScript Babel
- Nodemon - Simple monitor script for use during development of a node.js app Nodemon
- Webpack-cli - Webpack's Command Line Interface Webpack-cli
III. Source tree
.
├── .babelrc
├── client
│ ├── Agent
│ │ ├── actions
│ │ │ ├── Agent.js
│ │ │ ├── Api.js
│ │ │ ├── CallCenter.js
│ │ │ ├── Integration.js
│ │ │ ├── RecordDomain.js
│ │ │ ├── Role.js
│ │ │ ├── Sip.js
│ │ │ └── Template.js
│ │ ├── app.js
│ │ ├── components
│ │ │ ├── Agent.js
│ │ │ ├── Api.js
│ │ │ ├── CallCenter.js
│ │ │ ├── Decentralization.js
│ │ │ ├── Endpoints.js
│ │ │ ├── IndexPage.js
│ │ │ ├── Integration.js
│ │ │ ├── Integrator.js
│ │ │ ├── Mail.js
│ │ │ ├── Record.js
│ │ │ ├── RecordMode.js
│ │ │ ├── Role.js
│ │ │ ├── SIP.js
│ │ │ ├── Template.js
│ │ │ └── User.js
│ │ ├── constants
│ │ │ ├── Agent.js
│ │ │ ├── Api.js
│ │ │ ├── CallCenter.js
│ │ │ ├── Integration.js
│ │ │ ├── Role.js
│ │ │ ├── Sip.js
│ │ │ └── Template.js
│ │ ├── i18n.js
│ │ ├── Loading.js
│ │ ├── mapper.json
│ │ ├── reducers
│ │ │ ├── Agent.js
│ │ │ ├── Api.js
│ │ │ ├── CallCenter.js
│ │ │ ├── index.js
│ │ │ ├── Integration.js
│ │ │ ├── RecordDomain.js
│ │ │ ├── Role.js
│ │ │ ├── Sip.js
│ │ │ └── Template.js
│ │ └── store.js
│ ├── Anonymous
│ │ ├── app.js
│ │ └── components
│ │ └── SignIn.js
│ └── library
│ └── debug.js
├── Dockerfile
├── .dockerignore
├── .env
├── .gitignore
├── index.js
├── jsonwebtoken
│ └── index.js
├── package.json
├── package-lock.json
├── public
│ ├── css
│ │ ├── admin.css
│ │ ├── bootstrap-datetimepicker.min.css
│ │ ├── bootstrap.min.css
│ │ ├── bootstrap-select.min.css
│ │ ├── core.css
│ │ ├── font-awesome.min.css
│ │ ├── nv.d3.css
│ │ ├── perfect-scrollbar.css
│ │ ├── react-bootstrap-table.min.css
│ │ └── signin.css
│ ├── fonts
│ │ ├── fontawesome-webfont.ttf
│ │ ├── fontawesome-webfont.woff
│ │ ├── fontawesome-webfont.woff2
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ ├── glyphicons-halflings-regular.woff2
│ │ ├── Material-Design-Iconic-Font.ttf
│ │ ├── Material-Design-Iconic-Font.woff
│ │ └── Material-Design-Iconic-Font.woff2
│ ├── img
│ │ ├── empty-activity.png
│ │ ├── favicon.png
│ │ ├── Gcalls-plus-webphone.jpg
│ │ ├── icon-import-success.png
│ │ ├── icon-import-warning.png
│ │ └── logo.png
│ └── js
│ ├── bootstrap-datetimepicker.min.js
│ ├── bootstrap.min.js
│ ├── bootstrap-select.min.js
│ ├── charts-nvd3.js
│ ├── d3.js
│ ├── detect.js
│ ├── jquery-1.10.2.min.js
│ ├── jquery-latest.js
│ ├── jquery.min.js
│ ├── jssip-2.0.6.min.js
│ ├── jssip-3.2.4.min.js
│ ├── moment.min.js
│ ├── offline.min.js
│ ├── parsley.min.js
│ ├── perfect-scrollbar.js
│ ├── plyr.js
│ ├── socket.io.js
│ ├── vi.js
│ └── waves.js
├── root
│ ├── .bash_history
│ ├── .bashrc
│ ├── .cache
│ │ └── motd.legal-displayed
│ ├── .lesshst
│ ├── snap
│ │ └── lxd
│ │ ├── 23680
│ │ ├── common
│ │ └── current
│ ├── .ssh
│ │ └── authorized_keys
│ └── .viminfo
├── server
│ ├── config
│ │ ├── access.js
│ │ ├── authorization.js
│ │ ├── feature.js
│ │ ├── host.js
│ │ └── mailer.js
│ ├── lib
│ │ ├── access.js
│ │ ├── email.js
│ │ ├── feature.js
│ │ ├── logger.js
│ │ ├── password.js
│ │ └── phonenumber.js
│ ├── middleware
│ │ ├── authenticate.js
│ │ └── authorization.js
│ ├── route
│ │ ├── authenticated
│ │ │ ├── Agent.js
│ │ │ ├── Api.js
│ │ │ ├── CallCenter.js
│ │ │ ├── Integration.js
│ │ │ ├── RecordDomain.js
│ │ │ ├── Sip.js
│ │ │ └── User.js
│ │ ├── index.js
│ │ └── unauthenticated
│ │ ├── ForgetPassword.js
│ │ ├── Invite.js
│ │ ├── Notify.js
│ │ └── User.js
│ └── views
│ ├── admin.html
│ ├── agent.html
│ └── non-user.html
├── server.js
└── webpack.config.js
IV. Installation
- Clone project:
git clone https://gitlab.com/gcalls-opensource/gcallsfront.git
- Install utility modules:
npm install
Start server:
run in development
npm i -g pm2
npm run devrun in production
npm run prod